package com.enlorenz.common.excel.old;

import java.util.ArrayList;
import java.util.List;

import com.enlorenz.common.util.DataDetUtils;
import com.enlorenz.common.util.StringUtils;

/**
 * Excel表格Sql语句制造者
 * @author MAC
 */
public class ExcelSqlProducer {
	
	/**
	 * 解析成标准的sql语句
	 * @param data	Excel数据
	 * @param mapping	映射
	 * @param sqlTemplate	模板
	 * @return
	 */
	public static List<List<String>> doParseAllSheets(List<List<String []>> data,String sqlTemplate){
		return doParseAllSheets(data, sqlTemplate, null);
	}
	public static interface ParseHook{
		
		void view(String [] arr);
	
	}
	
	public static List<List<String>> doParseAllSheets(List<List<String []>> data,String sqlTemplate,ParseHook parseHook){
		if(DataDetUtils.isCollectionEmpty(data)){
			return null;
		}
		List<List<String>> sheetsList=new ArrayList<List<String>>();
		for(int i=0;i<data.size();i++){
			List<String> sheet=doParseSingleSheet(data.get(i), sqlTemplate,parseHook);
			sheetsList.add(sheet);
		}
		return sheetsList;
	}
	
	/**
	 * 解析成标准的sql语句
	 * @param data	Excel数据
	 * @param mapping	映射
	 * @param sqlTemplate	模板
	 * @return
	 */
	public static List<String> doParseSingleSheet(List<String []> data,String sqlTemplate,ParseHook parseHook){
		List<String> outputSql=new ArrayList<String>();
		for(String [] arr:data){
			if(null!=parseHook){
				try{
					parseHook.view(arr);
				}catch (Exception e) {
					e.printStackTrace();
				}
			}
			String sql=StringUtils.getTempateString(sqlTemplate, arr);
			outputSql.add(sql);
		}
		return outputSql;
	}
	
	public static String getSheetTranactionSql(List<List<String>> data){
		StringBuilder sb=new StringBuilder(1024);
		for(List<String> sheet:data){
			sb.append(getPageTranactionSql(sheet));
		}
		return sb.toString();
	}
	
	public static String getPageTranactionSql(List<String> data){
		StringBuilder sb=new StringBuilder(1024);
		for(String sql:data){
			sb.append(sql);
			sb.append(";");
			sb.append("\n");
		}
		/*sb.append("commit");
		sb.append("\n");*/
		return sb.toString();
	}
	
}
